package com.jike.mahjong.dao;

import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.jike.mahjong.model.ApplicationForm;
import com.jike.mahjong.model.Club;
import com.jike.mahjong.model.ClubPlayerMapping;
import com.jike.mahjong.model.Manager;
import com.jike.mahjong.model.NoticeMsg;
import com.jike.mahjong.model.Player;

/**
 * 俱乐部接口
 * @author Administrator
 *
 */
@Repository("clubDao")
public interface ClubDao {
	/**
	 * 插入俱乐部
	 * @param club
	 * @return
	 */
	int addClub(Club club);
	/**
	 * 根据id查询俱乐部
	 * @param id
	 * @return
	 */
	Club selectClubById(String id);
	/**
	 * 根据玩家id查询俱乐部
	 * @param playerId
	 * @return
	 */
	List<Club> selectClubByPlayerId(String playerId);
	/**
	 * 根据id更新俱乐部信息(不包括disabled)
	 * @param club(id不能为空)
	 * @return
	 */
	int updateClubInfo(Club club);
	/**
	 * 新增绑定
	 * @param mapping
	 * @return
	 */
	int addClubPlayerMapping(ClubPlayerMapping mapping);
	/**
	 * 删除俱乐部绑定信息
	 * @param playerId
	 * @return
	 */
	int deleteClubMapping(String playerId);
	/**
	 * 根据关系id或者玩家id查询
	 * @param mapping
	 * @return
	 */
	ClubPlayerMapping selectMapping(ClubPlayerMapping mapping);
	/**
	 * 根据俱乐部id查询关系列表
	 * @param clubId
	 * @return
	 */
	List<ClubPlayerMapping> selectMappingList(String clubId);
	/**
	 * 根据玩家id删除绑定
	 * @param playerId
	 * @return
	 */
	int deleteBingDingMapping(String playerId);
	/**
	 * 根据玩家id查询玩家信息
	 * @param playerId
	 * @return
	 */
	Player selectPlayerInfo(String playerId);
	/**
	 * 根据玩家id查询管理员
	 * @param playerId
	 * @return
	 */
	Manager checkPlayerIsManager(String playerId);
	/**
	 * 根据管理员账号查询信息
	 * @param managerId
	 * @return
	 */
	Manager selectManagerInfo(Map map);
	
	/**
	 * 查询玩家是否第一次绑定俱乐部
	 * @param map
	 * @return 0：是，1或者其他： 否
	 */
	int selectClubSize(Map map);
	/**
	 * 俱乐部人数更新
	 * @param map
	 * @return
	 */
	int updateClubSize(Map map);
	/**
	 * 查询俱乐部ID是否重复
	 * @param map
	 * @return
	 */
	int selectClubId(String clubId);
	/**
	 * 新增公告推送
	 * @param msg
	 * @return
	 */
	int addNoticeMsg(NoticeMsg msg);
	/**
	 * <!-- 查询玩家是否为代理管理员,否则不予解绑俱乐部 -->
	 * @param playerId
	 * @return
	 */
	int selectPlayerIsManager(String playerId);
	/**
	 * 
	 * @return
	 */
	List<ApplicationForm> getApplicationorm(Map map);
	/**
	 * 更新申请记录表状态
	 * @param map
	 * @return
	 */
	int updateAppFormState(Map map);
	/**
	 * 更新备注
	 * @param map
	 * @return
	 */
	int updateAppFormDesc(Map map);
	
	int upOrDownLevel(String managerId);
	/**
	 * 更新备注
	 * @param map
	 * @return
	 */
	int updateAdminDesc(Map map);
	/**
	 * 查询消息
	 * @param map
	 * @return
	 */
	List<NoticeMsg> selectNoticeMsg(Map map);
	/**
	 * 查询消息数量
	 * @param map
	 * @return
	 */
	int countNoticeMsg(Map map);
}
